package com.kanshu.client.util;

import android.content.Context;
import androidx.annotation.NonNull;
import android.util.DisplayMetrics;
import android.view.WindowManager;

/**
 * @author yqm
 * 获取设备参数的工具类
 */
public final class DeviceUtils {

    private DeviceUtils() {
    }

    /**
     * 获取屏幕的宽高（像素）
     *
     * @return 数组 格式为 {宽，高}
     */
    public static int[] getScreenSizePixels(Context context) {
        DisplayMetrics dm = getDisplayMetrics(context);
        int width = dm.widthPixels;         // 屏幕宽度（像素）
        int height = dm.heightPixels;       // 屏幕高度（像素）
        return new int[]{width, height};
    }

    /**
     * 获取屏幕的宽高（dp）
     *
     * @return 数组 格式为 {宽，高}
     */
    public static int[] getScreenSizeDP(Context context) {
        DisplayMetrics dm = getDisplayMetrics(context);
        int width = dm.widthPixels;         // 屏幕宽度（像素）
        int height = dm.heightPixels;       // 屏幕高度（像素）
        float density = dm.density;         // 屏幕密度
        // 屏幕宽度算法:屏幕宽度（像素）/屏幕密度
        int widthInDP = (int) (width / density);  // 屏幕宽度()
        int heightInDP = (int) (height / density);// 屏幕高度(dp)
        return new int[]{widthInDP, heightInDP};
    }


    /**
     * 获取屏幕密度dpi（120 / 160 / 240）
     *
     * @return 屏幕密度dpi
     */
    public static int getScreenDensityDpi(Context context) {
        DisplayMetrics dm = getDisplayMetrics(context);
        return dm.densityDpi;
    }

    /**
     * 获取屏幕密度（0.75 / 1.0 / 1.5）
     *
     * @return 屏幕密度
     */
    public static float getScreenDensity(Context context) {
        DisplayMetrics dm = getDisplayMetrics(context);
        return dm.density;
    }

    /**
     * 获取屏幕显示参数
     *
     * @return 设备显示参数
     */
    @NonNull
    public static DisplayMetrics getDisplayMetrics(Context context) {
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics dm = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(dm);
        return dm;
    }
}
